--- libvmime-0.7.1.orig/src/messageId.cpp	2005-03-27 14:59:12.000000000 +0200
+++ libvmime-0.7.1.patched/src/messageId.cpp	2007-07-31 14:14:38.827718500 +0200
@@ -102,7 +102,7 @@
 		// Extract left part
 		const string::size_type leftStart = position + (p - pstart);
 
-		while (p < pend && *p != '@') ++p;
+		while (p < pend && *p != '@' && *p != '>') ++p;
 
 		m_left = string(buffer.begin() + leftStart,
 		                buffer.begin() + position + (p - pstart));
@@ -162,6 +162,8 @@
 
 const string messageId::getId() const
 {
+	if (m_right == "")
+		return m_left;
 	return (m_left + '@' + m_right);
 }
 
@@ -177,7 +179,10 @@
 		pos = NEW_LINE_SEQUENCE_LENGTH;
 	}
 
-	os << '<' << m_left << '@' << m_right << '>';
+	os << '<' << m_left;
+	if (m_right != "")
+		os << '@' << m_right;
+	os << '>';
 
 	if (newLinePos)
 		*newLinePos = pos + m_left.length() + m_right.length() + 3;
